TOP

SQL Stored Procedures for SQL Server

YouLibreCalc for Excel logo

什么是Stored Procedure?

Stored Procedure(存储过程)是准备好的可以存储的 SQL 代码,以便可以反复使用该代码。

因此,如果您有一个一遍又一遍地编写的 SQL 查询,请将其保存为存储过程,然后调用它来执行。

您还可以将参数传递给存储过程,以便存储过程可以对传递的参数值进行操作。


Stored Procedure 语法

CREATE PROCEDURE procedure_name
AS 
sql_statement
GO

执行Stored Procedure

EXEC procedure_name

演示数据库

以下是“Northwind”数据库的“Customers”(“Customers”)表中的示例:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

Stored Procedure 示例

以下 SQL 查询创建一个名为“SelectAllCustomers”的存储过程,该过程从 Customers 表中选择所有记录:

CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO

让我们按如下方式执行上面的存储过程:

EXEC SelectAllCustomers

Stored Procedure 具有一个参数

以下 SQL 查询创建一个存储过程,用于从 Customers 表中选择特定城市的客户:

CREATE PROCEDURE SelectAllCustomers @City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO

让我们按如下方式执行上面的存储过程:

EXEC SelectAllCustomers @City = 'London'

Stored Procedure 具有许多参数

配置多个参数非常容易,即列出每个参数和数据类型,并用逗号分隔,如下所示。

以下 SQL 语句创建一个存储过程,从 Customers 表中选择具有特定邮政编码的特定城市的客户:

CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO

让我们按如下方式执行上面的存储过程:

EXEC SelectAllCustomers @City = 'London', @PostalCode = 'WA1 1DP'